module=$1                              #模块名
#branch=$2                              #分支
#WEB_PATH='/home/../xxx-'$env           #项目根路径(路径自行定义)
#JAR_PATH=$WEB_PATH'/web-jar/'          #jar包路径
#LOG_PATH=$WEB_PATH'/web-jar/'          #log路径
#SHELL_PATH=$WEB_PATH'/shell/'          #shell脚本路径
#BACKUP_PATH=$WEB_PATH'/backup/'        #备份jar包路径
#APP_NAME=$module'-1.0.0-SNAPSHOT.jar'  #当前项目名称
#DES_APP=$JAR_PATH$APP_NAME             #jar包全路径
#DES_LOG=$LOG_PATH'nohup-'$module'.out' #nohup全路径
#PROJECT_NAME=${module}                 #项目名称

#打印路径
#echo [INFO]'$APP_NAME':$APP_NAME
#echo [INFO]'$WEB_PATH:'$WEB_PATH
#echo [INFO]'$BACKUP_PATH:'$BACKUP_PATH
#echo [INFO]'$DES_APP:'$DES_APP
#echo [INFO]'$DES_LOG:'$DES_LOG
#
## 创建目录
#mkdir -p $WEB_PATH
#mkdir -p $JAR_PATH
#mkdir -p $LOG_PATH
#mkdir -p $BACKUP_PATH

#kill进程
#killProcess() {
#  pid=$(ps -ef|grep $DES_APP | grep -v grep | awk '{print $2}')   #获取进程ID
#  if [ -n "$pid" ]; then
#      kill -9 $pid
#      echo [INFO] ">>>>>>>>>>>>>>>>>>>>$DES_APP $pid has bean killed >>>>>>>>>>>>>>>>"
#  fi
#}
#此变量用来对应每个子项目的映射对应端口，避免随机映射端口导致服务无法访问
declare -A map=(["shaozj-server-gateway"]="8801:8801" ["shaozj-server-auth"]="8802:8802" ["shaozj-server-auth"]="8803:8803" ["shaozj-server-system"]="8804:8804")
PORT_VAL=${map[$module]}

#新镜像的名称
timestamp = $(date +%Y%m%d%H%M)
NEW_IMAGE_NAME=$module:$timestamp
#切换到包含Dockerfile的目录
DIR="../../shaozj-services/$module"
echo "切换到包含DOckerfile的目录 $DIR"
cd DIR

#构建镜像
echo "开始否见镜像：$NEW_IMAGE_NAME"
# 1.首先使用Dockerfile打镜像
docker build -t $NEW_IMAGE_NAME
if [ $? -ne 0 ]; then #判断上一个指令退出的状态码 0标识执行成功
  echo "构建镜像 $NEW_IMAGE_NAME 失败"
  exit 1
else
  echo "构建镜像 $NEW_IMAGE_NAME 成功"
fi

# 2.停止并删除之前运行的容器
echo '正在停止并删除之前运行的容器...'
RUNNING_CONTAINER_ID = $(docker ps | grep '$module' |awk '{print $1}')
if [ -n "$RUNNING_CONTAINER_ID" ]; then
  docker stop "$RUNNING_CONTAINER_ID"
  echo "容器 $RUNNING_CONTAINER_ID 已停止"
  docker rm "$RUNNING_CONTAINER_ID"
  echo "容器 $RUNNING_CONTAINER_ID 已删除"
fi

#删除除最新镜像外的所有旧镜像
OLD_IMAGE_TAGS = $( docker images | grep "$module" | awk '{print $2}' | grep -v '$timestamp' | sort | uniq)
for tag in $OLD_IMAGE_TAGS; do
  docker rmi "${module}:${tag}"
  echo "旧镜像 ${module}:${tag} 已删除"
done

# 在宿主机上创建logs目录，用于容器挂载，这样查看日志可以直接在宿主机查看，比较方便
echo "创建日志目录.."
mkdir -p /Users/shaozj/Work/WorkSpace/logs

#3. 运行新的镜像
echo "正在运行新的镜像..."
docker run -d -p $PORT_VAL --restart=always -v ~/kim/project/auth/logs:/usr/local/logs $NEW_IMAGE_NAME

if [ $? -eq 0 ]; then
  echo "新容器运行成功"
else
  echo "新容器运行失败"
  exit 1
fi
